This page last changed on Mar 09, 2009 by cmd0219.

Sprint 4 Goal

Converting the project to use JDBC functionality directly to update databases -- generally supports fewer tables than originally targeted.

Front Burner Stories

Convert plugin to use JDBC update mechanism on Oracle 10g

Edit

Convert plugin to use JDBC update mechanism on Oracle 10g either Updateable resultset or WebRowSet XML

Priority
Description Time Estimate
Time Remaining
Actual Time
Last Updated By
Status
  Refresh Requests (return WRS XML)
1
0
.75
Eugene + Matt
Complete
  Make table (using WRS XML) probably using http://www.datatables.net/usage 3
0
3
Eugene + Matt
Complete
  Handle edits / updates
6
0
7
 
Complete
  Convert DOM to parameter (just large xml string)
1.5
0
1.5
 
Complete
  Test - javascript will need unit test framework setup
6
2
2
 
In Progress
  Updateable SQL Macro refactor to just set up table area (velocity?)
1
0
1
Eugene + Matt
Complete
  Refresh Servlet to return WRS XML
1.5
0
.25
Chris + Paul
Complete
  Update Servlet read/execute WRS XML
1.25
0
1.25
Chris + Paul
Complete
  Rewrite tests with many XML comparison examples
2.5
0
5
Chris + Paul
Complete
  Server side refactoring
2
0
2
Chris + Paul
Complete
             
Total   25.75 
6
21.75



Back Burner Stories

Edit

Issue # Impact Date Reported Reported By Assigned To Priority (H/M/L) Status Comments
2 M 1/16/09 Eugene Chris L
Resolved
Should there be a warning for updating a row that has already been updated? (User story: Update table with primary keys Design Session)
3 L 2/11/09 Eugene Paul + Eugene L
Resolved
IE Support for JS
Mostly innerHtml stuff, just replace with jQuery
4 M 2/11/09 Eugene Paul + Eugene M
Resolved
Table sorting after a refresh does not work

Need to pull the JS from the macro somehow that is placed after the table (or rerun it, or replace it).
5 M 2/11/09 Eugene   M
Resolved
Affected rows for joins, or any multitable query calculated incorrectly

Basically, with primary keys, it is one affected row for each table, else show dialog. Ignore how many rows of the join are affected. 
6 L 2/11/09 Chris    
Resolved
Output generator tests
7 M 2/11/09 Matt/Paul Paul + Eugene M
Resolved
Single Row Update
Upon single row update the whole table refreshes
8 M 2/11/09 Chris Paul + Eugene H
Resolved
Identifying columns old values not sent, sent as a key. 

Need to split out JS logic or change server-side.
9 L
2/12/09 Chris   L
Resolved
Random connection error 

sql: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was85184 milliseconds ago.The last packet sent successfully to the server was 85184 milliseconds ago, which is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.
10 L 2/12/09 Chris   M
No longer an issue
Query with 1 primary key and 1 identifying column 

WebRowSet Fix
11 L 2/13/09 Paul   L
No longer an issue
No affected rows when updating with id cols
WebRowSet Fix
12 H 2/13/09 Paul   M
No longer an issue
Primary key columns are not listed in multi-table queries
JDBC Metadata probably doesn't report primary keys on selects of multi table selects. Could run queries against underlying tables... WebRowSet Fix
13 L 2/13/09     M
Resolved
Multiline SQL breaks javascript
Remove newlines in UpdatableSqlMacro
14 M 2/16/09 Eugene Paul + Eugene M
Resolved
Refresh Servlet can return errors that JavaScript does not handle
15 L 2/16/09 Eugene   L
Resolved
Resource paths (images) do not respect confluence directory locations
16 M 2/24/09 Eugene   M
Being fixed with WebRowSet
Client side (and probably the server side) does not properly handle null values
Client side passes empty string instead of null.
17 M
2/24/09
Eugene
  M
Resolved
Catalog names do not exist in Oracle 

UpdateServlet has the code to handle this. All tests have catalog names and therefore cannot work on Oracle.
18
  2/24/09
Chris
   
Resolved
Parsing queries in Oracle 

Very hard
19
  2/24/09
Chris
   
Resolved
Do we support unions, intersections, minus
20   3/14/09
Chris
  M-L
Resolved: Needs to be included in user documentation
MySQL catalog updates

WebRowSet bug for handling catalogs


com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.affectedmultitable1 WHERE userId = 2 AND userName = 'Christopher' AND locationI' at line 1
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
    at com.mysql.jdbc.Util.getInstance(Util.java:381)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1030)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3491)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3423)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1936)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2060)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2542)
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1734)
    at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1885)
    at com.sun.rowset.internal.CachedRowSetWriter.updateOriginalRow(CachedRowSetWriter.java:491)
    at com.sun.rowset.internal.CachedRowSetWriter.writeData(CachedRowSetWriter.java:335)
    at com.sun.rowset.CachedRowSetImpl.acceptChanges(CachedRowSetImpl.java:859)
    at com.sun.rowset.CachedRowSetImpl.acceptChanges(CachedRowSetImpl.java:918)
    at org.swift.confluence.sql.WRSUpdateServlet.doPost(WRSUpdateServlet.java:60)
   
21
M
3/31/09
Chris
PY + EM
M
Resolved

Canceling rows copies value, does not rerender

Need to rerender data before putting it in table. Only an error at the moment with dates/timestamps since they are longs are displayed in a format.
22
M-L
4/1/09
Eugene
PY + EM H
Resolved

Javascript Injection 

Javascript can be injected with date format
23
M
4/1/09
Chris
  M
  SQL Injection /Malicious attempts

DELETE / DROP /etc. could be passed to plugin and executed.
24
L
4/1/09
Paul
PY + EM
M
Resolved
Deletion is allowed while editing a cell 

Not necessarily a huge thing and may be fine depending on user preference. Should be reviewed though when doing usability or GUI stuff.
25 H
4/3/09
Eugene
PY + EM
H
Resolved
Update values not copied to current 

On update success, update row things should be copied to current values, otherwise you can't do another update without a refresh (makes wrong current value labels).
26
H
4/3/09
Eugene
  M
Resolved
Errors do not go away, until a refresh of whole page.
27
L
4/9/09
Matt + Chris
Eugene
L
Resolved
Save all and Cancel all should not be showing until the table is showing.
28
M
4/10/09
Eugene
Eugene
M
Resolved
You cannot edit rows that are not on the first page (if paging is used)
29
M
4/15/09
Eugene
Eugene
M
Resolved
Deleting two rows says basically the wrong row because datatables doesn't delete internal data: http://datatables.net/forums/comments.php?DiscussionID=107
30
M
4/15/09
Chris
  M
Resolved
Javascript error for null date/timestamps. invalid date if (isNaN(date)) throw new SyntaxError("invalid date");
31
M
4/20/09
Chris
  M
Resolved but need more tests
  
Validators allow null on a non nullable field
32   4/20/ 09
Eugene + Tim
   
Resolved - using java 1.6
 
probably error related connection pool exhausted - maxActive=25, maxIdle=5, maxWait=10000, SetBigStringTryClob=true
33
  4/20/ 09
Eugene + Tim
   
Resolution currently in progress

Scale cannot be negative, readonly tables, min_extent
34
  4/20/ 09
Eugene + Tim
   
Resolved - Not a bug, db user did not have permissions
 
Cannot add/edit: char(1 byte), nullable, null default, no primary key, and a number.
35
H
4/20/09
Eugene + Tim
Eugene + Chris
H
Resolved

Spaces in column name create error in RowSetWriter for Oracle and MySQL.  Resolved by adding ` or " surrounding column name with space based on database name provided by connection database metadata.
36
  4/21/09
Chris
  L
  Firefox table border does not appear until column is clicked for sorting
37
M
4/22/09
Chris

M
Resolved? - Cannot be reproduced
Extra whitespace in macro sql fails with "ORA-00911: invalid character"
38
M
4/22/09 
Chris
  M
  {updateablesql:dataSource=|blindness=help|chris=angry}
produces:

Apr 22, 2009 8:11:22 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet servlet-module-container-servlet threw exception
java.lang.ClassCastException: org.apache.naming.NamingContext cannot be cast to javax.sql.DataSource
        at edu.rit.se.updateablesql.AbstractSQLServlet.lookUpDataSource(AbstractSQLServlet.java:122)
        at edu.rit.se.updateablesql.AbstractSQLServlet.doPost(AbstractSQLServlet.java:61)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
        at com.atlassian.plugin.servlet.DelegatingPluginServlet.service(DelegatingPluginServlet.java:42)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
        at com.atlassian.plugin.servlet.ServletModuleContainerServlet.service(ServletModuleContainerServlet.java:51)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
Document generated by Confluence on May 21, 2009 10:23